package com.example.mobilesafe.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;

import com.example.mobilesafe.R;
import com.example.mobilesafe.constant.ConstantValue;
import com.example.mobilesafe.utils.SharedPreferencesUtil;
import com.example.mobilesafe.utils.ToastUtil;

public abstract class BaseSetupActivity extends AppCompatActivity {

    /**
     * 手势管理对象
     */
    private GestureDetector mGestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base_setup);

        // 创建手势管理的对象，用作管理在onTouchEvent(event)中传递过来的手势
        mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                // 监听手势的移动
                if (e1.getX() - e2.getX() > 0) {
                    // 由右向左，移动到下一页，直接调用子类的下一页方法
                    showNextPage();
                }
                if (e1.getX() - e2.getX() < 0) {
                    // 由左向右，移动到上一页，直接调用子类的上一页方法
                    showPrePage();
                }
                return super.onFling(e1, e2, velocityX, velocityY);
            }
        });
    }


    /**
     * 1.监听屏幕上响应的事件类型（按下1次，移动多次，抬起1次）
     * @param event
     * @return
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // 通过手势处理类，接收多钟类型的事件，用作处理
        mGestureDetector.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

    /**
     * 2.展示下一页的方法，由子类决定具体跳转到哪个页面
     */
    protected abstract void showNextPage();

    /**
     * 3.展示上一页的方法，由子类决定具体跳转到哪个页面
     */
    protected abstract void showPrePage();

    /**
     * 4.“下一页”按钮的点击方法
     * @param view
     */
    public void nextPage(View view) {
        showNextPage();
    }

    /**
     * 5.“上一页”按钮的点击方法
     * @param view
     */
    public void prePage(View view) {
        showPrePage();
    }

}
